package com.tc.report;

import java.util.List;
import java.util.Map;

public interface IntersectReport {
	public boolean isShowRowTotal();
	public void setShowRowTotal(boolean isShowRowTotal);
	public boolean isShowColTotal();
	public void setShowColTotal(boolean isShowColTotal);
	public boolean isShowErrorValue();
	public void setShowErrorValue(boolean isShowErrorValue);
	public String getShowErrorValue();
	public void setShowErrorValue(String showErrorValue);
	public boolean isShowBlankValue();
	public void setShowBlankValue(boolean isShowBlankValue);
	public String getShowBlankValue();
	public void setShowBlankValue(String showBlankValue);
	
	/** 
	 * 当前值区域存在多个字段时，用于判断值区域的字段是否显示在行区域，
	 * 默认情况显示在行区域的最后一个字段.
	 * 值区域字段作为行或列区域字段时，不存在该值区域的合计值显示。
	 */
	public boolean isRowFieldOfValue();
	public void setRowFieldOfValue(boolean isRowFieldOfValue);
	
	/**
	 * 将当前字段加入行(/列/值)区域列表中。
	 * @param currFieldName 当前字段名称。
	 * @param prevFieldName 当前字段前接字段名称。
	 * @param nextFieldName 当前字段后接字段名称。
	 */
	public void addRowField(String currFieldName, String prevFieldName, String nextFieldName)throws Exception;
	public void addColField(String currFieldName, String prevFieldName, String nextFieldName)throws Exception;
	public void addValField(String currFieldName, String prevFieldName, String nextFieldName)throws Exception;
	/**
	 * 向指定的区域字段列表最后增加一个字段。
	 * @param areaType
	 * @param fieldName
	 */
	public void addFieldAtLast(String areaType, String fieldName)throws Exception;
	
	/**
	 * 
	 * @param areaType
	 * @param fieldName
	 * @param fieldAlias
	 * @throws Exception
	 */
	public void addFieldAtLast(String areaType, String fieldName, String fieldAlias)throws Exception;
	
	/**
	 * 设置字段标题显示别名。
	 * @param fieldName
	 * @param fieldAlias
	 */
	public void setFieldTitleAlias(String fieldName, String fieldAlias)throws Exception;
	/**
	 * 设置字段值对应的字典项。
	 * @param fieldName
	 * @param dictMap
	 */
	public void setFieldDict(String fieldName, Map<String, Object> dictMap);
	
	/**
	 * 设置字段对应的分类汇总属性。
	 * @param fieldName
	 * @param classifyTotalType
	 * @throws Exception
	 */
	public void setFieldClassifyTotalType(String fieldName, String classifyTotalType) throws Exception;
	/**
	 * 获取处理后的报表结果数据。
	 * @param queryResultList
	 * @return
	 * @throws Exception
	 */
	public Map<String,Object> findReportResult(List<Map<String, Object>> queryResultList) throws Exception;
	
	/**
	 * 获取行区域标题单元数据。
	 * @return
	 */
	public List<DnCell> getRowHeadTitle() throws Exception;
	
	
}
